package com.tbit.uqbike.object.pojo;

import com.alibaba.fastjson.annotation.JSONField;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.tbit.uqbike.constant.InvoiceRecordConstant;
import lombok.Data;

import java.math.BigDecimal;
import java.util.Date;

/**
 * @author yee_
 * @version 1.0
 * @date 2023/8/7 14:11
 * 发票开具记录
 */
@Data
public class InvoiceRecord {

    /**
     * 记录id
     */
    @TableId(type = IdType.AUTO)
    private Integer id;
    private Integer brandId;
    /**
     * 用户id
     */
    private Integer userId;
    /**
     * 用户手机号
     */
    private String userPhone;
    /**
     * 订单类型(1:骑行订单 2:套餐订单)
     */
    private Integer orderType;
    /**
     * 公司税号
     */
    private String companyTaxNumber;
    /**
     * 公司抬头
     */
    private String companyTitle;
    /**
     * 公司地址
     */
    private String companyAddress;
    /**
     * 公司电话 非必填
     */
    private String companyPhone;
    /**
     * 开户银行
     */
    private String bank;
    /**
     * 开户账号
     */
    private String account;
    /**
     * 邮箱
     */
    private String email;
    /**
     * 申请时间
     */
    @JSONField(format = "yyyy-MM-dd HH:mm:ss")
    private Date applyTime;
    /**
     * 开票/处理时间
     */
    @JSONField(format = "yyyy-MM-dd HH:mm:ss")
    private Date invoiceTime;
    /**
     * 发票地址
     */
    private String url;
    /**
     * 发票单号
     */
    private String invoiceNumber;
    /**
     * 开票金额(元)
     */
    private BigDecimal invoiceAmount;
    /**
     * 重开退票时间
     */
    @JSONField(format = "yyyy-MM-dd HH:mm:ss")
    private Date refundTime;
    /**
     * 开票状态
     * 0-已申请,待开票  初态
     * 1-已开票  由  0 -> 1 或 3 -> 1
     * 2-已驳回  由 0 -> 2
     * 3-重开待审核 由 1 -> 3
     * 4-已退票  由 3 -> 4
     * 5-重开后待审核新票 初始态(不可见)
     */
    private Integer status;
    /**
     * 备注
     */
    private String remark;

    private Integer newId;
    /**
     * 开票生命周期id
     */
    private String flowId;

    /**
     * 开票类型：0-自动开票；1-手动开票
     * */
    private Integer invoiceOpenType;

    /**
     * 红字发票信息确认单id
     * */
    private String redChongVoteId;

    /**
     * 开票详情
     * */
    private String invoicingDetail;

    public boolean audited() {
        return !this.status.equals(InvoiceRecordConstant.STATUS_APPLY);
    }

    public boolean waitReview() {
        return this.status.equals(InvoiceRecordConstant.STATUS_REOPEN);
    }

    public boolean reopenReview() {
        return this.status.equals(InvoiceRecordConstant.STATUS_REOPEN_NEW);
    }

}
